\begin{tikzpicture}

	\definecolor{reportcomponentcolor}{rgb}{1,1,0.6}

	\tikzstyle{reportcomponent} = [component,
	                               path fading=flow fade,
	                               rounded corners=2,
	                               minimum width=25ex,
	                               minimum height=10ex,
	                               bottom color=reportcomponentcolor,
	                               font=\normalsize \sffamily]

	\tikzstyle{sessionarrow} = [arrow, sloped=false, left, align=right]

	\node[reportcomponent]                      (server) {Report server};
	\node[reportcomponent, above=7ex of server] (client) {Report client};

	\draw[sessionarrow] (client) -- node {session} (server);

	\tikzstyle{reportds} = [dropshadow, fill=white, fill opacity=0.6,
	                         chamfered rectangle,
	                         chamfered rectangle corners=north east,
	                         minimum width=5ex, minimum height=6ex]

	\tikzstyle{dsmap} = [opacity=0.7, densely dotted]

	% dataspace within server
	\path (server.east) node[left=1ex, inner sep=0, reportds, align=center] (serverds) {\tiny RAM};

	% dataspace within client
	\path (client.east) node[left=1ex, reportds] (clientds) {};

	% memory mapping
	\draw[dsmap] (serverds.north west) -- (clientds.south west);
	\draw[dsmap] (serverds.0) -- (clientds.south east);

	% report
	\path (client.north) node[below=0ex, xshift=-5ex] (report) {$\downrsquigarrow$};

	\draw[arrow, dashed] (report.east)
		.. controls +(17ex,0) and +(1ex,4ex) ..
		node[sloped=false, pos=0.8] {$report$} (server.30);

	\tikzstyle{informationflow} = [opacity=0.4,
	                         decoration={markings,
	                         mark=between positions 0.03 and 1 step 1ex with {\arrow{latex}}},
	                         postaction={decorate}]

	\path[informationflow] (client.east)
	  .. controls +(3ex,-3ex) and +(3ex,3ex) .. (serverds.east);

	\path (server.west)+(-3ex,0) node {};


\end{tikzpicture}
